12228
4525
Cette question a déjà des réponses ici:
Express js - impossible de rediriger
(4 réponses)
Fermé il y a 7 ans.
J'utilise passeportjs avec un middleware ci-dessous. Il est supposé vérifier si l'utilisateur est connecté lorsqu'il demande certaines choses. S'il n'est pas connecté, il doit être redirigé vers la page de connexion.
J'ai un itinéraire de demande comme suit:
app.put ('/ fantasyteams /: fantasyTeamId', auth.requiresLogin, fantasyteams.update);
Cet itinéraire sera appelé lorsque l'utilisateur tente de mettre à jour une ressource appelée Fantasy Team sur le site Web.
auth.requiresLogin est un middleware comme suit:
exports.requiresLogin = function (req, res, next) {
if (req.isAuthenticated ()) {
retourne suivant ()
}
return res.redirect ("/ signin");
};
Après avoir connecté mon utilisateur, j'ai simulé l'expiration de session en supprimant le cookie de session. Par la suite, via le site Web, j'ai fait une demande PUT '/ fantasyteams / 123' pour mettre à jour l'équipe fantastique numéro 123.
fantasyteams.update est simplement une opération de sauvegarde mongodb / mongoose:
exports.update = fonction (req, res) {
var fantasyteam = req.fantasyteam;
fantasyteam = _.extend (fantasyteam, req.body);
fantasyteam.save (fonction (err) {
res.jsonp (fantasyteam);
});
};
Comme prévu, le gestionnaire d'itinéraire (app.put ...) ci-dessus a attrapé la demande, transmettez-la au middleware auth.requiresLogin pour vérifier si l'utilisateur est connecté. son cookie de session. res.redirect est appelé comme prévu. Cependant, le site Web ne redirige pas vers la page de connexion. Je vois cela dans les journaux de commande node.js:
PUT / connexion 404 328 ms
Qu'ai-je fait de mal? 
On dirait que le problème est que vous n'avez pas de gestionnaire d'itinéraire pour PUT / signin. La demande d'origine était un put, donc quand elle redirige, elle fait toujours partie de la même demande de "put" du navigateur. Ajoutez simplement un gestionnaire pour put / post / n'importe quoi avec app.all ('/ signin')
3
|
Ce n'est pas la réponse que vous recherchez? Parcourez les autres questions marquées avec les cookies de session node.js express passport.js ou posez votre propre question.